#include "stdint.h"
#include "stm32f1xx_hal.h"
#include "DevicesLed.h"




void vLedInit(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    /* GPIO Ports Clock Enable */
    LED_BLUE_RCC_GPIO_CLK_ENABLE();
    LED_RED_RCC_GPIO_CLK_ENABLE();
    LED_YELLOW_RCC_GPIO_CLK_ENABLE();

    /*Configure GPIO pin Output Level */
    HAL_GPIO_WritePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin, GPIO_PIN_SET);
    HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_SET);
    HAL_GPIO_WritePin(LED_YELLOW_GPIO_Port, LED_YELLOW_Pin, GPIO_PIN_SET);

    /*Configure GPIO pin : PtPin */
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

    GPIO_InitStruct.Pin = LED_BLUE_Pin;
    HAL_GPIO_Init(LED_BLUE_GPIO_Port, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = LED_RED_Pin;
    HAL_GPIO_Init(LED_RED_GPIO_Port, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = LED_YELLOW_Pin;
    HAL_GPIO_Init(LED_YELLOW_GPIO_Port, &GPIO_InitStruct);

    LED_OPEN();
}

void vLedOpen(uint16_t ucNumber)
{
    if(ucNumber & LED_BLUE)
        HAL_GPIO_WritePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin, GPIO_PIN_SET);
    if(ucNumber & LED_RED)
        HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_SET);
    if(ucNumber & LED_YELLOW)
        HAL_GPIO_WritePin(LED_YELLOW_GPIO_Port, LED_YELLOW_Pin, GPIO_PIN_SET);
}

void vLedClose(uint16_t ucNumber)
{
    if(ucNumber & LED_BLUE)
        HAL_GPIO_WritePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin, GPIO_PIN_RESET);
    if(ucNumber & LED_RED)
        HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_RESET);
    if(ucNumber & LED_YELLOW)
        HAL_GPIO_WritePin(LED_YELLOW_GPIO_Port, LED_YELLOW_Pin, GPIO_PIN_RESET);
}

void vLedRevesal(uint16_t ucNumber)
{
    if(ucNumber & LED_BLUE)
        HAL_GPIO_TogglePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin);
    if(ucNumber & LED_RED)
        HAL_GPIO_TogglePin(LED_RED_GPIO_Port, LED_RED_Pin);
    if(ucNumber & LED_YELLOW)
        HAL_GPIO_TogglePin(LED_YELLOW_GPIO_Port, LED_YELLOW_Pin);
}
